package com.gz.servlet_my;

import com.gz.tomcat.http.GzRequest;
import com.gz.tomcat.http.GzResponse;

import javax.servlet.ServletException;
import java.io.IOException;

public abstract class GzHttpServlet implements GzServlet {
    @Override
    public void service(GzRequest request, GzResponse response) throws IOException {
        if (request.getMethod().equalsIgnoreCase("GET")) {
            this.doGet(request, response);
        }else if (request.getMethod().equalsIgnoreCase("POST")) {
            this.doPost(request, response);
        }
    }

    //1.如果一个抽象类实现一个接口，可以不用实习它的所有方法
    //但是如果是非抽象类，必须实现所有方法
    //我这里是抽象类，可以不用实现所有方法
    //2.如果一个类实现了一些方法，那么他的子类可以不用再实现这个方法
    //另外如果子类不是抽象类，则必须实现它的父类(抽象类)的实现接口没有实现的的所有方法
    @Override
    public void init() throws ServletException {

    }

    @Override
    public void destroy() {

    }

    //这里我们用了模版设计模式
    //让GzHttpServlet子类实现
    //原生HttpServlet用的不是抽象方法(子类不是必须实现)，这里用了抽象，也就是子类必须实现
    public abstract void doGet(GzRequest request, GzResponse response) throws IOException;
    public abstract void doPost(GzRequest request, GzResponse response) throws IOException;
}
